package com.the_ring.chapter08.widget;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.TypedValue;

import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.PagerTabStrip;

import com.the_ring.chapter08.R;


/**
 * 在 res/value/attr.xml 中添加
 * <resources>
 *     <declare-styleable name="CustomPagerTab">
 *         <attr name="textColor" format="color" />
 *         <attr name="textSize" format="dimension" />
 *     </declare-styleable>
 * </resources>
 */


public class CustomPagerTab extends PagerTabStrip {

    private int textColor = Color.BLACK;    // 文本颜色
    private int textSize = 15;              // 文本大小

    public CustomPagerTab(@NonNull Context context) {
        super(context);
    }

    public CustomPagerTab(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        if (attrs != null) {
            // 根据 CustomPagerTab 的属性定义，从 XML 文件中获取属性数组描述
            TypedArray attrArray = context.obtainStyledAttributes(attrs, R.styleable.CustomPagerTab);
            // 根据属性描述定义，获取 XML 文件中的文本颜色
            attrArray.getColor(R.styleable.CustomPagerTab_textColor, textColor);
            // 根据属性描述定义，获取 XML 文件中的文本颜色
            // getDimension 得到的是 px 值，需要转换为 sp 值
            textSize = dip2px(context, attrArray.getDimension(R.styleable.CustomPagerTab_textSize, textSize));
            attrArray.recycle();    // 回收属性数组描述
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        setTextColor(textColor);
        setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);
        super.onDraw(canvas);
    }

    // 根据是手机的分辨率从 dp 的单位转化为 px
    public int dip2px(Context context, float dpValue) {
        // 获取手机像素密度（1dp 对应几个 px）
        float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f); // 四舍五入取整
    }
}
